Today, online services exist for creating a custom product that incorporates text provided by a user. The text may be, for example, a slogan, message, saying, title, quote, or other string of characters that is rendered in or on the custom product. With some online services, the custom product that can be created is a digital product such as, for example, a digital video, digital image, or document in which the text appears. With other online services, the custom product that can be created is a physical product such as, for example, clothing (e.g., a t-shirt, a hat, etc.) or other physical article (e.g., a coffee mug, a calendar, a wedding invitation, etc.) on which the text is printed.
Typically, the user provides the text to be rendered in or on the custom product from his or her personal computing device. To render the text in or on the custom product, the text is typically sent over a network from the user's personal computing device to a server operated by the online service. The server may also generate and return to the personal computing device a preview of the custom product that visually depicts how the text will appear when eventually rendered in or on the custom product. The visual preview may be in the form of a digital video, a digital image, or a web page, for example. However, the user may wish to experiment with different text, different text placements, and different font faces before deciding on a final text configuration for the custom product. In this case, for each experimental configuration, the user may have to wait for the text to be transmitted to the server over the network, the server to generate the preview, and the preview to be returned to and viewed at the user's personal computing device before the user can decide if the configuration is suitable. This waiting may be frustrating or cumbersome for the user and may limit the overall usability of the online service.
An alternative approach is to generate the preview at the user's personal computing device using text layout and rendering services provided by a user agent. The user agent may be, for example, a web browser application that performs text layout and rendering operations, possibly supported by an underlying operating system, on given text. In this case, the text may still be sent to the server for rendering in or on the custom product. However, due to differences in how different user agents lay out text, this alternative approach may not provide a “what you see is what you get (WYSIWYG)” user experience. Instead, the text as presented in the preview may appear noticeably different than the text as rendered in or on the custom product. Unfortunately, in some cases, the user may not notice this until after the user has paid for and received the custom product.